#include <iostream>
#include <map>
#include <fstream>
#include <sstream>
using namespace std;
//实现字符串的替换，通过读取file.txt文件的字符串，先将其存在map里面

class A{
    public:
    //先实现字符串的读取
        void read(const string& filename){
            ifstream ifs(filename);
            string line;
            //实现的是一个单词的键，对应后面一行的所有字符
            while(getline(ifs,line)){
                string word;
                string line2;
                istringstream iss(line);
                //将这读到的一行分成两个部分，分别是word和line2
                while(iss>>word,getline(iss,line2)){
                    //值必须大于1，否则存进去的也是一个空值
                    if(line2.size()>1){
                    _dic[word]=line2.substr(1);
                    }
                }
            }
        }
        //这里已经把文件map.txt里面的文件给成功给获取到了，键值对已
        //经存到了map容器里面,现在实现获取一个file.txt里面的数据，并且翻译出来
        void translate(const string & filename){
        //首先要读取文件
        ifstream ifs(filename);
        //string word;
        //while(ifs>>word){
        //if(_dic.find(word)!=_dic.end()){
        //cout<<_dic[word];
        //}else{
        //    cout<<word<<endl;
        //}
       // }
       string line;
       while(getline(ifs,line)){
        istringstream iss(line);
        string word;
        while(iss>>word){
            if(_dic.find(word)!=_dic.end()){
                cout<<_dic[word]<<" ";
            }else{
            cout<<word<<" ";
            }
        }
       }
       cout<<endl;
    }
    map<string,string> _dic;

};
void test(){
    A a;
    a.read("map.txt");
    a.translate("file.txt");
    for(auto ele:a._dic){
        cout<<ele.first<<" "<<ele.second<<endl;
    }
}
int main(int argc, char * argv[]){
    test();
    return 0;
}

